____ _ _ _ _
| _ \ ___ | |_ (_) _ __ ___ __| | (_) __ _
| |_) | / _ \ | __| | | | '_ \ / _ \ / _| | | | / _ |
| _ < | __/ | |_ | | | |_) | | __/ | (_| | | | | (_| |
|_| \_\ \___| \__| |_| | .__/ \___| \__,_| |_| \__,_|
|_|
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―
Apache MINA
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
top
Apache MINA ist ein freies Java Framework fΓΌr Netzwerkkommunikation. Es stellt eine ereignisbasierte Programmierschnittstelle fΓΌr asynchrone Kommunikation ΓΌber Transportprotokolle wie TCP/IP and UDP/IP und Java NIO zur VerfΓΌgung.
Contents
β’ Funktionsweise
β’ Geschichte
β’ Alternativen
β’ Einzelnachweise
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Funktionsweise
Apache MINA ist primΓ€r eine technologieunabhΓ€ngige Programmierschnittstelle fΓΌr verschiedene Netzwerkprotokolle. Diese kΓΆnnen ΓΌber ByteBuffers, StreamIoHandler oder benutzerdefinierte Message Objekte und Codecs angesprochen werden. Die mitgelieferten Protokolle sind:
β’ TCP/IP & UDP/IP via Java NIO, auch Transport Layer Security fΓ€hig
β’ Serielle Kommunikation (EIA-232) via RXTX
β’ In-VM Pipe Kommunikation
DarΓΌber hinaus kΓΆnnen eigene Protokolle implementiert werden. Die Netzwerkkommunikation kann single-threaded oder durch konfigurierbare Thread-Pools abgewickelt werden.cite-ref-features-4-0[4]
Apache MINA bietet UnterstΓΌtzung fΓΌr die Absicherung von Γberlast, Bandbreitenkontrolle, Unit-Testen ΓΌber Mock-Objekte, Management und Γberwachung via Java Management Extensions sowie Integrationen mit den Dependency Injection Frameworks PicoContainer und Spring.cite-ref-features-4-1[4]
Geschichte
Apache MINA basiert auf dem im Juni 2004 von Trustin Lee erstmals verΓΆffentlichten Netzwerk Framework "Netty2". Es war das erste entsprechende Java Framework, welches auf einer ereignisbasierten Architektur aufbaute, hatte allerdings Schwierigkeiten mit Text-Protokollen und architektonische Fehler, die seinen Einsatz in massiv parallelen Systemen verhinderte.
Alex Karasulu vom Apache Directory Team arbeitete zur gleichen Zeit selbst an einem Netzwerk-Framework und wurde auf Netty2 aufmerksam. Er konnte Trustin Lee zur Zusammenarbeit an einem neuen Netzwerk Framework fΓΌr das Apache Directory Projekt bewegen. Im September 2004 wurde basierend auf einer Mischung aus den Architekturen der beiden Frameworks die Grundlage fΓΌr Apache MINA geschaffen.
Seit damals ist Apache MINA das primΓ€re Netzwerk Framework des Apache Directory Projektes fΓΌr diverse Protokolle des Apache Directory Servers β u. a. LDAP, Kerberos, DNS und NTP.cite-ref-5[5]
Alternativen
Neben der direkten Verwendung der Java-Programmierschnittstellen fΓΌr NIO, Socket und TCP/IP- und UDP/IP-Kommunikation gibt es noch folgende alternative Frameworks zur Netzwerkkommunikation in Java:
β’ Grizzly
β’ Netty 4
β’ QuickServer
β’ xSocket
Einzelnachweise
cite-note-1b0813e95be1e1df-11. projects.apache.org. (abgerufen am 8. April 2020).
cite-note-1bc7769ada15501a-22. Latest SSHD Release.
cite-note-33. β FAQ β What does MINA mean? Abgerufen am 5. Juni 2013.
cite-note-features-44. β Trustin Lee: Apache MINA Features. Apache Software Foundation, 24. Juli 2007, abgerufen am 8. MΓ€rz 2016 (englisch).
cite-note-55. β Trustin Lee: Genesis of MINA. Apache Software Foundation, 30. Januar 2007, abgerufen am 8. MΓ€rz 2016 (englisch).